import axios from "axios";
import {
 notify
} from '@/composible/notify'
import {
  useCookies
} from '@vueuse/integrations/useCookies'

import { router} from "./router";

//axios实例
const server = axios.create({
  baseURL: "/api",
  timeout: 1000
})


// 添加请求拦截器
server.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么:添加token
  const cookie = useCookies();
  const token = cookie.get("admin-token");
  if (token) {
    config.headers["token"] = token;
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  notify("error", "请求错误")
  return Promise.reject(error);
});



// 添加响应拦截器
server.interceptors.response.use(function (response) {
  //直接返回data.data数据，这样获取token就不需要那么长
  return response.data.data;
}, function (err) {
  //错误处理统一再拦截器内做
  notify("error", err?.response?.data?.msg || "请求失败");
  //修改密码时返回非法token要跳转到登录页
  if (err?.response?.data?.msg === "非法token，请先登录！")
  {
    router.push("\login");
  }
  return Promise.reject(err);
});

export default server